// 导入Player脚本
import player from "./Player";
const {ccclass, property} = cc._decorator;

@ccclass
export default class Door_pass extends cc.Component {

    @property({displayName: "过关UI", tooltip: "过关UI", type: cc.Node})
    UI: cc.Node = null;

    @property({displayName: "player脚本所在节点", tooltip: "player脚本所在节点", type: player})
    player: player = null;

    @property({displayName: "过关后需要禁用的UI", tooltip: "过关后需要禁用的UI", type: cc.Node})
    UI_forbidden: cc.Node[] = [];

    @property({displayName: "显示倒计时的文字", tooltip: "显示倒计时的文字", type: cc.Label})
    lb: cc.Label = null;

    // 是否可以过关
    is_OK: boolean = false;
    // 倒计时数字
    num: number = 3.4;
    // 如果开始倒计时
    is_count_down: boolean = false;


    update (dt: number) {
        // 如果开始倒计时
        if (this.is_count_down == true) {
            // 每秒 - 1
            this.num -= dt;
        } else {
            // 如果不开始倒计时数值为3.4
            this.num = 3.4;
        }

        // 如果数值小于等于0
        if (this.num <= 0) {
            // 可以过关
            this.is_OK = true;
            // 为了防止穿帮   文字显示为0秒后进入传送门
            this.lb.string = "0秒后进入传送门";

            // 显示通过UI
            this.open();
            // 倒计时文字隐藏
            this.lb.node.active = false;

            // 用for循环隐藏部分UI
            for (let i = 0; i < this.UI_forbidden.length; i++) {            
                this.UI_forbidden[i].active = false;
            }
        }
        // 如果数值大于0   取整后显示在文字上 
        else {
            this.lb.string = Math.floor(this.num) + "秒后进入传送门";
        }
    }


    // 显示通关UI
    open () {
        // 显示通关UI
        this.UI.active = true;
        // 设置线速度为0, 0
        this.player.player.getComponent(cc.RigidBody).linearVelocity = cc.v2(0, 0);
    }

    // 重新玩一次函数
    again () {
        // 重新加载场景
        cc.director.loadScene("Game");
    }

    // 返回村庄函数
    back () {
        // 跳转到村庄场景
        cc.director.loadScene("Village");
    }

    // 碰撞回调
    //当碰撞产生的时候调用     other 产生碰撞的另一个碰撞组件     self  产生碰撞的自身的碰撞组件
    onCollisionEnter (other, self) {
        // 开始倒计时
        this.is_count_down = true;

        // 显示显示倒计时的文字
        this.lb.node.active = true;
    }

    // 碰撞回调
    // 只在两个碰撞体结束接触时被调用一次
    onCollisionExit (contact:cc.PhysicsContact,selfCollider:cc.PhysicsCollider,otherConllider:cc.PhysicsCollider): void {
        // console.log("onEndContact");
        // 停止倒计时
        this.is_count_down = false;

        // 隐藏显示倒计时的文字
        this.lb.node.active = false;
    }



}
